热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解封|外层_OpenvSwitch—常用指令

篇首语:本文由编程笔记#小编为大家整理,主要介绍了OpenvSwitch—常用指令相关的知识,希望对你有一定的参考价值。目录文

篇首语:本文由编程笔记#小编为大家整理,主要介绍了OpenvSwitch — 常用指令相关的知识,希望对你有一定的参考价值。



目录

文章目录


  • 目录
  • 版本
  • 日志
  • 控制管理类
  • 虚拟网桥类
  • 流表类
    • 表项
    • 匹配
    • 动作

  • QoS
    • ingress policing

  • Overlay Tunnel
    • GRE
    • VxLAN

  • sFlow
  • STP
  • 端口镜像
  • 端口聚合
  • goto table 配置
  • group 表
  • meter 表


版本

# 查看 OvS 版本
$ ovs-appctl --version
ovs-appctl (Open vSwitch) 2.0.0
Compiled Apr 19 2018 17:57:34
# 查看 OvS 支持的 OpenFlow 版本
$ ovs-ofctl --version
ovs-ofctl (Open vSwitch) 2.0.0
Compiled Apr 19 2018 17:57:34
OpenFlow versions 0x1:0x4

日志

# 查看 OvS Log 级别
$ ovs-appctl vlog/list
# 设置 Log 级别
#ovs-appctl vlog/set module name:console, syslog, file:off, emer, err, warn, info, dbg
$ ovs-appctl vlog/set stp:file:dbg
# 查询指令历史记录
$ ovsdb-tool show-log [-mmm]

控制管理类

# 设置/清除网桥的 OpenFlow 协议版本
ovs-vsctl set bridge br0 protocols=OpenFlow13
ovs-vsctl clear bridge br0 protocols
# 设置/删除控制器
ovs-vsctl set-controller br0 tcp:1.2.3.4:6633
ovs-vsctl del-controller br0
# 查看控制器列表
ovs-vsctl list controller
# 设置/删除被动连接控制器
ovs-vsctl set-manager tcp:1.2.3.4:6640
ovs-vsctl get-manager
ovs-vsctl del-manager
# 设置 Fail 模式,支持 Standalone 或者 Secure。
# - standalone(default):清除所有控制器下发的流表,OvS 自己接管。
# - secure:按照原来流表继续转发。
ovs-vsctl del-fail-mode br0
ovs-vsctl set-fail-mode br0 secure
ovs-vsctl get-fail-mode br0
# 设置/移除可选选项
ovs-vsctl set Interface eth0 options:link_speed=1G
ovs-vsctl remove Interface eth0 options link_speed

虚拟网桥类

# 查看网桥和端口
ovs-vsctl show
# 创建一个网桥
ovs-vsctl add-br br0
ovs-vsctl set bridge br0 datapath_type=netdev
# 添加/删除一个端口
# for system interfaces
ovs-vsctl add-port br0 eth1
ovs-vsctl del-port br0 eth1
# for DPDK
ovs-vsctl add-port br0 dpdk1 -- set interface dpdk1 type=dpdk options:dpdk-devargs=0000:01:00.0
# for DPDK bonds
ovs-vsctl add-bond br0 dpdkbond0 dpdk1 dpdk2 \\
-- set interface dpdk1 type=dpdk options:dpdk-devargs=0000:01:00.0 \\
-- set interface dpdk2 type=dpdk options:dpdk-devargs=0000:02:00.0
# or new version
ovs-vsctl add-port br0 dpdkbond0 \\
-- set interface dpdkbond0 type=dpdk options:dpdk-devargs=0000:01:00.0,0000:02:00.0
# 查看某网桥当前流表
ovs-ofctl dump-flows br0
ovs-ofctl -O OpenFlow13 dump-flows br0
ovs-appctl bridge/dump-flows br0
# 查看 Interface ID 等
ovs-appctl dpif/show
# 查看接口统计
ovs-ofctl dump-ports br0

流表类

表项

# 添加普通流表
ovs-ofctl add-flow br0 in_port=1,actions=output:2
# 按匹配项来删除流表
ovs-ofctl del-flows br0 "in_port=1"
# 删除所有流表
ovs-ofctl del-flows br0

匹配

# 匹配 VLAN tag,范围为 0-4095
ovs-ofctl add-flow br0 priority=401,in_port=1,dl_vlan=777,actions=output:2
# 匹配 VLAN pcp,范围为 0-7
ovs-ofctl add-flow br0 priority=401,in_port=1,dl_vlan_pcp=7,actions=output:2
# 匹配源/目的 MAC
ovs-ofctl add-flow br0 in_port=1,dl_src=00:00:00:00:00:01/00:00:00:00:00:01,actions=output:2
ovs-ofctl add-flow br0 in_port=1,dl_dst=00:00:00:00:00:01/00:00:00:00:00:01,actions=output:2
# 匹配以太网类型,范围为 0-65535
ovs-ofctl add-flow br0 in_port=1,dl_type=0x0806,actions=output:2
# 匹配源/目的 IP
# 条件:指定 dl_type=0x0800,或者 ip/tcp
ovs-ofctl add-flow br0 ip,in_port=1,nw_src=10.10.0.0/16,actions=output:2
ovs-ofctl add-flow br0 ip,in_port=1,nw_dst=10.20.0.0/16,actions=output:2
# 匹配协议号,范围为 0-255
# 条件:指定 dl_type=0x0800 或者 ip
# ICMP
ovs-ofctl add-flow br0 ip,in_port=1,nw_proto=1,actions=output:2
# 匹配 IP ToS/DSCP,ToS 范围为 0-255,DSCP 范围为 0-63
# 条件:指定 dl_type=0x0800/0x86dd,并且 ToS 低 2 位会被忽略,DSCP 值为 ToS 的高 6 位,并且低 2 位为预留位。
ovs-ofctl add-flow br0 ip,in_port=1,nw_tos=68,actions=output:2
ovs-ofctl add-flow br0 ip,in_port=1,ip_dscp=62,actions=output:2
# 匹配 IP ECN 位,范围为 0-3
# 条件:指定 dl_type=0x0800/0x86dd
ovs-ofctl add-flow br0 ip,in_port=1,ip_ecn=2,actions=output:2
# 匹配 IP TTL,范围为 0-255
ovs-ofctl add-flow br0 ip,in_port=1,nw_ttl=128,actions=output:2
# 匹配 tcp/udp,源/目的端口,范围为 0-65535
# 匹配源 tcp 端口 179
ovs-ofctl add-flow br0 tcp,tcp_src=179/0xfff0,actions=output:2
# 匹配目的 tcp 端口 179
ovs-ofctl add-flow br0 tcp,tcp_dst=179/0xfff0,actions=output:2
# 匹配源 udp 端口 1234
ovs-ofctl add-flow br0 udp,udp_src=1234/0xfff0,actions=output:2
# 匹配目的 udp 端口 1234
ovs-ofctl add-flow br0 udp,udp_dst=1234/0xfff0,actions=output:2
# 匹配 tcp flags
# tcp flags=fin,syn,rst,psh,ack,urg,ece,cwr,ns
ovs-ofctl add-flow br0 tcp,tcp_flags=ack,actions=output:2
# 匹配 icmp code,范围为 0-255
# 条件:指定 icmp
ovs-ofctl add-flow br0 icmp,icmp_code=2,actions=output:2
# 匹配 VLAN TCI
# TCI 低 12 位为 VLAN id,高 3 位为 Priority
# 例如 tci=0xf123 则 vlan_id 为 0x123 和 vlan_pcp=7
ovs-ofctl add-flow br0 in_port=1,vlan_tci=0xf123,actions=output:2
# 匹配 MPLS label
# 条件:指定 dl_type=0x8847/0x8848
ovs-ofctl add-flow br0 mpls,in_port=1,mpls_label=7,actions=output:2
# 匹配 MPLS tc,范围为 0-7
# 条件:指定 dl_type=0x8847/0x8848
ovs-ofctl add-flow br0 mpls,in_port=1,mpls_tc=7,actions=output:2
# 匹配 Tunnel id,源/目的 IP
# 匹配 tunnel id
ovs-ofctl add-flow br0 in_port=1,tun_id=0x7/0xf,actions=output:2
# 匹配 tunnel 源 IP
ovs-ofctl add-flow br0 in_port=1,tun_src=192.168.1.0/255.255.255.0,actions=output:2
# 匹配 tunnel 目的 IP
ovs-ofctl add-flow br0 in_port=1,tun_dst=192.168.1.0/255.255.255.0,actions=output:2


动作

# normal,标准的 L2/L3 处理流程。
ovs-ofctl add-flow br0 in_port=1,actions=normal
# output,从指定接口转发出去。
ovs-ofctl add-flow br0 in_port=1,actions=output:2
# flood,从所有物理接口转发出去(除了入接口和已关闭 flooding 的接口)。
ovs-ofctl add-flow br0 in_port=1,actions=flood
# all,从所有物理接口转发出去(除了入接口)。
ovs-ofctl add-flow br0 in_port=1,actions=all
# local,转发给本地网桥。
ovs-ofctl add-flow br0 in_port=1,actions=local
# in_port,从入接口转发回去。
ovs-ofctl add-flow br0 in_port=1,actions=in_port
# controller,以 packet-in 消息上送给控制器。
ovs-ofctl add-flow br0 in_port=1,actions=controller
# drop,丢弃数据包操作。
ovs-ofctl add-flow br0 in_port=1,actions=drop
# mod_vlan_vid,修改报文的 VLAN id,该选项会使 vlan_pcp 置为 0。
ovs-ofctl add-flow br0 in_port=1,actions=mod_vlan_vid:8,output:2
# mod_vlan_pcp,修改报文的 VLAN 优先级,该选项会使 vlan_id 置为 0。
ovs-ofctl add-flow br0 in_port=1,actions=mod_vlan_pcp:7,output:2
# strip_vlan,剥掉报文内外层 VLAN tag。
ovs-ofctl add-flow br0 in_port=1,actions=strip_vlan,output:2
# push_vlan,在报文外层压入一层 VLAN tag,需要使用 Openflow1.1 以上版本兼容。
ovs-ofctl add-flow -O OpenFlow13 br0 in_port=1,actions=push_vlan:0x8100,set_field:4097-\\>vlan_vid,output:2
# NOTE:set_field 值为 4096+vlan_id,并且 vlan 优先级为 0,即 4096-8191,对应的 vlan_id 为 0-4095
# pop_vlan,弹出报文最外层 VLAN tag。
ovs-ofctl add-flow br0 in_port=1,dl_type=0x8100,dl_vlan=777,actions=pop_vlan,output:2
# 修改源/目的 MAC,修改源/目的 IP。
# 修改源 MAC
ovs-ofctl add-flow br0 in_port=1,actions=mod_dl_src:00:00:00:00:00:01,output:2
# 修改目的 MAC
ovs-ofctl add-flow br0 in_port=1,actions=mod_dl_dst:00:00:00:00:00:01,output:2
# 修改源 IP
ovs-ofctl add-flow br0 in_port=1,actions=mod_nw_src:192.168.1.1,output:2
# 修改目的 IP
ovs-ofctl add-flow br0 in_port=1,actions=mod_nw_dst:192.168.1.1,output:2
# 修改 TCP/UDP/SCTP 源目的端口。
# 修改 TCP 源端口
ovs-ofctl add-flow br0 tcp,in_port=1,actions=mod_tp_src:67,output:2
# 修改 TCP 目的端口
ovs-ofctl add-flow br0 tcp,in_port=1,actions=mod_tp_dst:68,output:2
# 修改 UDP 源端口
ovs-ofctl add-flow br0 udp,in_port=1,actions=mod_tp_src:67,output:2
# 修改 UDP 目的端口
ovs-ofctl add-flow br0 udp,in_port=1,actions=mod_tp_dst:68,output:2
# mod_nw_tos,修改 ToS 字段的高 6 位,范围为 0-255,值必须为 4 的倍数,并且不会去修改 ToS 低 2 位 ecn 值。
# 条件:指定 dl_type=0x0800
ovs-ofctl add-flow br0 ip,in_port=1,actions=mod_nw_tos:68,output:2
# mod_nw_ecn,修改 ToS 字段的低 2 位,范围为 0-3,并且不会去修改 ToS 高 6 位的 DSCP 值。
ovs-ofctl add-flow br0 ip,in_port=1,actions=mod_nw_ecn:2,output:2
# mod_nw_ttl,修改 IP 报文 TTL 值,需要使用 Openflow1.1 以上版本兼容。
ovs-ofctl add-flow -O OpenFlow13 br0 in_port=1,actions=mod_nw_ttl:6,output:2
# dec_ttl,对 IP 报文进行 TTL 自减操作。
ovs-ofctl add-flow br0 in_port=1,actions=dec_ttl,output:2
# push_mpls,修改报文的 Ethertype,并且压入一个 MPLS LSE。
ovs-ofctl add-flow br0 in_port=1,actions=push_mpls:0x8847,set_field:10-\\>mpls_label,output:2
# pop_mpls,剥掉最外层 MPLS Label,并且修改 Ethertype 为非 MPLS 类型。
ovs-ofctl add-flow br0 mpls,in_port=1,mpls_label=20,actions=pop_mpls:0x0800,output:2
# set_mpls_label,对报文最外层 MPLS 标签进行修改,范围为 20bit 值。
ovs-ofctl add-flow br0 in_port=1,actions=set_mpls_label:666,output:2
# set_mpls_tc,对报文最外层 MPPLS TC 进行修改,范围为 0-7。
ovs-ofctl add-flow br0 in_port=1,actions=set_mpls_tc:7,output:2
# set_mpls_ttl,对报文最外层 MPLS TTL 进行修改,范围为 0-255。
ovs-ofctl add-flow br0 in_port=1,actions=set_mpls_ttl:255,output:2
# dec_mpls_ttl,对报文最外层 MPLS TTL 进行自减操作。
ovs-ofctl add-flow br0 in_port=1,actions=dec_mpls_ttl,output:2
# move NXM,使用 move 参数对 NXM 字段进行操作。
# 将报文源 MAC 复制到目的 MAC 字段,并且将源 MAC 改为 00:00:00:00:00:01。
ovs-ofctl add-flow br0 in_port=1,actions=move:NXM_OF_ETH_SRC[]-\\>NXM_OF_ETH_DST[],mod_dl_src:00:00:00:00:00:01,output:2
# load NXM,使用 load 参数对 NXM 字段进行赋值操作。
# push mpls label,并且把 10(0xa) 赋值给 MPLS Label。
ovs-ofctl add-flow br0 in_port=1,actions=push_mpls:0x8847,load:0xa-\\>OXM_OF_MPLS_LABEL[],output:2
# 对目的 MAC 进行赋值。
ovs-ofctl add-flow br0 in_port=1,actions=load:0x001122334455-\\>OXM_OF_ETH_DST[],output:2
# 指定 Group,group id 为已创建的 group table。
ovs-ofctl add-flow br0 in_port=1,actions=group:666

  • 常用 NXM 字段参照表。

QoS

ingress policing

# 配置 ingress policing,对接口 eth0 入流限速 10Mbps
ovs-vsctl set interface eth0 ingress_policing_rate=10000
ovs-vsctl set interface eth0 ingress_policing_burst=8000
# 清除相应接口的 ingress policer 配置
ovs-vsctl set interface eth0 ingress_policing_rate=0
ovs-vsctl set interface eth0 ingress_policing_burst=0
# 查看接口 ingress policer 配置
ovs-vsctl list interface eth0
# 查看网桥支持的 QoS 类型
ovs-appctl qos/show-types br0

Overlay Tunnel

GRE

# 创建一个 GRE 接口,并且指定 OpenFlow Port ID 为 1001
ovs-vsctl add-port br0 gre1 -- set Interface gre1 type=gre options:remote_ip=1.1.1.1 ofport_request=1001
# (可选的)将 ToS 或者 TTL 在 Tunnel 上继承,并将 Tunnel id 设置成 123
ovs-vsctl set Interface gre1 options:tos=inherit options:ttl=inherit options:key=123
# 创建 GRE 流表
# 封装 GRE 转发
ovs-ofctl add-flow br0 ip,in_port=1,nw_dst=10.10.0.0/16,actions=output:1001
# 解封 GRE 转发
ovs-ofctl add-flow br0 in_port=1001,actions=output:1

VxLAN

# 创建一个 VxLAN 接口,并且指定 OpenFlow Port ID 为 2001
ovs-vsctl add-port br0 vxlan1 -- set Interface vxlan1 type=vxlan options:remote_ip=1.1.1.1 ofport_request=2001
# (可选的)将 ToS 或者 TTL 在 Tunnel 上继承,将 VNI 设置成 123,UDP 目的端为设置成 8472(默认为 4789)
ovs-vsctl set Interface vxlan1 options:tos=inherit options:ttl=inherit options:key=123 options:dst_port=8472
# 创建 VxLAN 流表。
# 封装 VxLAN 转发
ovs-ofctl add-flow br0 ip,in_port=1,nw_dst=10.10.0.0/16,actions=output:2001
# 解封 VxLAN 转发
ovs-ofctl add-flow br0 in_port=2001,actions=output:1

sFlow

# 对 br0 进行 sFlow 监控
ovs-vsctl -- --id=@sflow create sflow agent=eth0 target=\\"10.0.0.1:6343\\" header=128 sampling=64 polling=10 -- set bridge br0 sflow=@sflow
# agent: 与 collector 通信所在的网口名,通常为管理口
# target: collector 监听的 IP 地址和端口,端口默认为 6343
# header: sFlow 在采样时截取报文头的长度
# polling: 采样时间间隔,单位为 s
# 查看创建的 sFlow
ovs-vsctl list sflow
# 删除对应的网桥 sFlow 配置,参数为 sFlow UUID
ovs-vsctl remove bridge br0 sflow 7b9b962e-fe09-407c-b224-5d37d9c1f2b3
# 删除网桥下所有 sFlow 配置
ovs-vsctl -- clear bridge br0 sflow

STP

# 开启/关闭指定 Bridge 的 STP
$ ovs-vsctl set bridge <bridge> stp_enable&#61;true
$ ovs-vsctl set bridge <bridge> stp_enable&#61;false
# 查询指定 Bridge 的 STP 的配置信息
$ ovs-vsctl get bridge <bridge> stp_enable
# 设置指定 Bridge 的 STP Priority
$ ovs−vsctl set bridge <bridge> other_config:stp-priority&#61;0x7800
# 设置指定 Bridge 的 STP Cost
$ ovs−vsctl set bridge <bridge> other_config:stp-path-cost&#61;10

端口镜像

# 配置 eth0 收到/发送的数据包镜像到 eth1。
ovs-vsctl -- set bridge br0 mirrors&#61;&#64;m \\
-- --id&#61;&#64;eth0 get port eth0 \\
-- --id&#61;&#64;eth1 get port eth1 \\
-- --id&#61;&#64;m create mirror name&#61;mymirror select-dst-port&#61;&#64;eth0 select-src-port&#61;&#64;eth0 output-port&#61;&#64;eth1
# 查看端口镜像配置
ovs-vsctl get bridge br0 mirrors
# 删除端口镜像配置
ovs-vsctl -- --id&#61;&#64;m get mirror mymirror -- remove bridge br0 mirrors &#64;m
# 清除网桥下所有端口镜像配置
ovs-vsctl clear bridge br0 mirrors

端口聚合

# 创建一个聚合口
ovs-vsctl add-port br0 dpdkbond0 \\
-- set interface dpdkbond0 type&#61;dpdk options:dpdk-devargs&#61;0000:01:00.0,0000:02:00.0
# 设置聚合口模式
# mode&#61;1
ovs-vsctl set port dpdkbond0 bond_mode&#61;active-backup
# mode&#61;2
ovs-vsctl set port dpdkbond0 bond_mode&#61;balance-slb
# mode&#61;4
ovs-vsctl set port dpdkbond0 bond_mode&#61;balance-tcp
ovs-vsctl set port dpdkbond0 lacp&#61;active
ovs-vsctl set port dpdkbond0 lacp&#61;off
ovs-vsctl set port dpdkbond0 lacp&#61;passive
# 查看 mode&#61;4 lacp 协商状态
ovs-appctl lacp/show

goto table 配置

数据流先从 table0 开始匹配&#xff0c;如 actions 有 goto_table&#xff0c;再进行后续 table 的匹配&#xff0c;实现多级流水线&#xff0c;如需使用 goto table&#xff0c;则创建流表时&#xff0c;指定 table id&#xff0c;范围为 0-255&#xff0c;不指定则默认为 table0。

# 在 table0 中添加一条流表条目。
ovs-ofctl add-flow br0 table&#61;0,in_port&#61;1,actions&#61;goto_table&#61;1
# 在 table1 中添加一条流表条目。
ovs-ofctl add-flow br0 table&#61;1,ip,nw_dst&#61;10.10.0.0/16,actions&#61;output:2

group 表

由于 group 表是 Openflow1.1 版本以后才支持&#xff0c;所以所有命令需要指定 OpenFlow1.1 版本以上。

group 表支持 4 种类型&#xff1a;


  1. all&#xff1a;所有 buckets 都执行一遍。
  2. select&#xff1a; 每次选择其中一个 bucket 执行&#xff0c;常用于负载均衡应用。
  3. ff(FAST FAILOVER)&#xff1a;快速故障修复&#xff0c;用于检测解决接口等故障。
  4. indirect&#xff1a;间接执行&#xff0c;类似于一个函数方法&#xff0c;被另一个 group 来调用。

# 查看当前设备对 group 的支持。
ovs-ofctl -O OpenFlow13 dump-group-features br0
# 查看 group 表。
ovs-ofctl -O OpenFlow13 dump-groups br0
# 创建 group 表。
# 类型为 all
ovs-ofctl -O OpenFlow13 add-group br0 group_id&#61;1,type&#61;all,bucket&#61;output:1,bucket&#61;output:2,bucket&#61;output:3
# 类型为 select
ovs-ofctl -O OpenFlow13 add-group br0 group_id&#61;2,type&#61;select,bucket&#61;output:1,bucket&#61;output:2,bucket&#61;output:3
# 类型为 select&#xff0c;指定 hash 方法&#xff08;5 元组&#xff0c;OpenFlow1.5&#43;&#xff09;
ovs-ofctl -O OpenFlow15 add-group br0 group_id&#61;3,type&#61;select,selection_method&#61;hash,fields&#61;ip_src,bucket&#61;output:2,bucket&#61;output:3
# 删除 group 表。
ovs-ofctl -O OpenFlow13 del-groups br0 group_id&#61;2
# 创建流表。
ovs-ofctl -O OpenFlow13 add-flow br0 in_port&#61;1,actions&#61;group:2

meter 表

meter 表是 Openflow1.3 版本以后才支持的特性&#xff0c;Open vSwitch 在 2.8 以后支持。

# 查看当前设备对 meter 的支持。
ovs-ofctl -O OpenFlow13 meter-features br0
# 查看 meter 表。
ovs-ofctl -O OpenFlow13 dump-meters br0
# 查看 meter 统计。
ovs-ofctl -O OpenFlow13 meter-stats br0
# 创建 meter 表。
# 限速类型以 kbps&#xff08;kilobits per second&#xff09;计算&#xff0c;超过 20kb/s 则丢弃。
ovs-ofctl -O OpenFlow13 add-meter br0 meter&#61;1,kbps,band&#61;type&#61;drop,rate&#61;20
# 同上&#xff0c;增加 burst size 参数。
ovs-ofctl -O OpenFlow13 add-meter br0 meter&#61;2,kbps,burst,band&#61;type&#61;drop,rate&#61;20,burst_size&#61;256
# 同上&#xff0c;增加 stats 参数&#xff0c;对 meter 进行计数统计。
ovs-ofctl -O OpenFlow13 add-meter br0 meter&#61;3,kbps,burst,stats,band&#61;type&#61;drop,rate&#61;20,burst_size&#61;256
# 限速类型以 pktps&#xff08;packets per second&#xff09;计算&#xff0c;超过 1000pkt/s 则丢弃。
ovs-ofctl -O OpenFlow13 add-meter br0 meter&#61;4,pktps,band&#61;type&#61;drop,rate&#61;1000
# 删除 meter 表。
# 删除全部 meter 表。
ovs-ofctl -O OpenFlow13 del-meters br0
# 删除 meter id&#61;1。
ovs-ofctl -O OpenFlow13 del-meter br0 meter&#61;1
# 创建流表。
ovs-ofctl -O OpenFlow13 add-flow br0 in_port&#61;1,actions&#61;meter:1,output:2














创作打卡挑战赛


赢取流量/现金/CSDN周边激励大奖


推荐阅读
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 第七章•Firewalld防火墙实战
    1、防火墙安全基本概述在CentOS7系统中集成了多款防火墙管理工具,默认启用的是firewalld(动态防火墙管理器)防火墙管理工具,Firewalld支持CLI(命令行)以及G ... [详细]
  • 在做以下实验时需先做的操作为:(1)打开两个虚拟机(desktop和server)并更改他们的ipÿ ... [详细]
  • 则将追究法律责任。[url]http:future.blog.51cto.com2695983651[url]使用rsync来实现文件同步 ... [详细]
  • showcdpneighbor的输出内容字段描述DeviceID指直接相连设备的主机名LocalInterface指接收CDP分组的端口或接口Holdtime指在没有收到其他CDP ... [详细]
  •   ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在使用vue和webpack进行异步组件按需加载时可能出现的报错问题,并提供了解决方法。同时还解答了关于局部注册组件和v-if指令的相关问题。 ... [详细]
  • MQTT介绍(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM推出的一种针对移动终端设备的基于TCPIP的发布订阅协议可以连接大量的远程 ... [详细]
  • NetworkWorkingGroupB.CloustonRequestforComments:2456CiscoSystemsCategory:StandardsTrackB.M ... [详细]
author-avatar
itsima
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有